package com.tianjin.design.interpreter;

/**
 * @Description: 解释器模式# 行为型模式
 * 1、解释：给定一个语言，定义它的文法的一种表示，并定义一个解释器，这个解释器使用该表示来解释语言中的句子。
 * 2、使用场景：自己的理解是，对于一些常用的晦涩难懂的东西通过一定规则进行解释，解释后的结果会变的简单易动，但是解释的过程是封装的，
 *              这样使得功能实现简单。例如：中国人和美国人说话（互相语言不通），不知道对方说的是什么，所以这时候需要预定解释器来完成此翻译工作
 *              解释器模式理解起来应该简单，但是做起来可能不太容易，因为如果规则不固定，则解释器会异常复杂，不过好在客户端不需要关心
 * 3、代码实现：以2中例子
 *      3-1 首先要有有一个存储翻译内容的容器 Context
 *      3-2 需要现有一个语言解释器抽象类 LanguageInterpreter，接收解释的内容
 *      3-3 具体的解释实现类
 *          ChineseToEnglishInterpreter 中译英
 *          EnglishToChineseInterpreter 英译中
 *      3-4 为了方便使用再写一层 InterpreterManager
 *      3-4 客户端如test中main
 *      这里的例子比较简单，实际中使用解释器用来处理较为复杂的内容
 */
public class Test {

    public static void main(String[] args) {

        Context context = new Context();
        context.setInput("你好");
        context.setType("A");
        System.out.println("中国人说话："+ context.getInput());

        InterpreterManager interpreterManager = new InterpreterManager();
        Context interpreter = interpreterManager.interpreter(context);

        System.out.println("美国人听到的： "+interpreter.getOutput());

    }

}
